package main

import (
	"fmt"
	"github.com/gogf/gf/frame/g"
	"log"
	"os/exec"
	"sync"
)

func main() {
	cmdString := `#bin/bash
who am i
ls -al
sleep 2
echo "a"
ping 127.0.0.1 -c 5
if (( 8<10 ))
then
    echo "你都成年了，智商怎么还不及格！"
    echo "来C语言中文网（http://c.biancheng.net/）学习编程吧，能迅速提高你的智商。"
fi
`
	cmdString = `/opt/rsa/test.py`
	g.Dump(cmdString)
	// 远程执行的命令
	// cmd := exec.Command("ssh", "root@47.95.203.124", "whoami && cd / && ls -al  && sleep 5 && echo https://github.com/libragen/felix")
	cmd := exec.Command("ssh", "root@47.95.203.124", "python /tmp/test.py") // python xxx.py

	// 创建输出管道
	stdout, err := cmd.StdoutPipe()
	if err != nil {
		log.Fatal(err)
	}

	// 开始命令
	if err := cmd.Start(); err != nil {
		log.Fatal(err)
	}

	// 使用一个goroutine来读取输出
	var wg sync.WaitGroup
	wg.Add(1)
	go func() {
		defer wg.Done()
		for {
			buf := make([]byte, 1024)
			n, err := stdout.Read(buf)
			if err != nil {
				log.Fatal(err)
			}
			fmt.Print(string(buf[:n]))
		}
	}()

	// 等待命令执行完成
	if err := cmd.Wait(); err != nil {
		log.Fatal(err)
	}

	// 等待输出goroutine完成
	wg.Wait()
}
